package com.ruoyi.ring.service;

import com.ruoyi.ring.domain.RingGroupMessage;
import com.ruoyi.ring.domain.dto.ApplyGroupDTO;
import com.ruoyi.ring.domain.dto.ApprovalDTO;
import com.ruoyi.ring.domain.dto.MemberRemarkDTO;
import com.ruoyi.ring.domain.dto.RingGroupDTO;
import com.ruoyi.ring.domain.vo.GroupResultVO;
import com.ruoyi.ring.domain.vo.RingGroupMemberResultVO;
import com.ruoyi.ring.domain.vo.RingGroupMessageResultVO;
import com.ruoyi.ring.domain.vo.RingGroupResultVO;

import java.util.List;

public interface IAppGroupService {

    /**
     * 新增群组 app
     */
    int addGroup(RingGroupDTO dto);
    /**
     * 查询群组列表 app
     */
    List<RingGroupResultVO> queryGroupList();

    /**
     * 获取群组详情 app
     */
    RingGroupResultVO queryGroup(Long id);

    /**
     * 修改群组显示顺序 app
     */
    int editGroupSort(Long id);

//    /**
//     * 添加群组成员 app
//     */
//    int addGroupMember(ApplyGroupDTO applyGroupDTO);

    /**
     * 申请/邀请加入群组 app
     */
    int applyJoinGroup(ApplyGroupDTO applyGroupDTO);

    /**
     * 获取群组码ById app
     */
    String queryGroupCodeById(Long id);

    /**
     * 获取群组码 app
     */
    String queryGroupCode();

    /**
     * 查询我的邀请审批后群组消息列表 app
     */
    List<RingGroupMessageResultVO> queryInviterMessageList(RingGroupMessage ringGroupMessage);


    /**
     * 查询我的申请审批后群组消息列表 app
     */
    List<RingGroupMessageResultVO> queryApplyMessageList(RingGroupMessage ringGroupMessage);


    /**
     * 是否同意加入群组 app
     */
    int approval(ApprovalDTO dto);

    /**
     * 修改成员备注 app
     */
    int editGroupMemberRemark(MemberRemarkDTO dto);

    /**
     * 解散群组 app
     */
    int removeGroup(Long id);

    /**
     * 移除群组成员/退出群组 app
     */
    int removeGroupMember(Long id);
    /**
     * 查询群组成员列表 app
     * @param id 群组ID
     * @return
     */
    List<RingGroupMemberResultVO> queryGroupMemberList(Long id);

    /**
     * 身体活力 app
     * @param groupId 群组ID
     * @return
     */
    List<GroupResultVO> queryPhysicalVitality(Long groupId);

    /**
     * 睡眠 app
     * @param groupId 群组ID
     * @return
     */
    List<GroupResultVO> querySleep(Long groupId);

    /**
     * 能量平衡 app
     * @param groupId 群组ID
     * @return
     */
    List<GroupResultVO> queryEnergyBalance(Long groupId);
}
